#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

extern char **environ;

int main()
{
    char *const myenv[] = {
        "MYVAL1=11111111111111",
        "MYVAL2=22222222222222",
        "MYVAL3=33333333333333",
        "MYVAL4=44444444444444",
        NULL};
    char *env_val = "MYVAL5=5555555555555555555555555";
    putenv(env_val);
    pid_t id = fork();
    if (id == 0)
    {
        printf("pid: %d, exec command begin\n", getpid());
        sleep(1);
        execle("./test", "test", "-a", "-b", NULL, myenv); // 直接传
        printf("pid: %d, exec command begin\n", getpid());
    }
    pid_t rid = waitpid(id, NULL, 0);
    if (rid == id)
        printf("wait success, rid: %d\n", rid);

    return 0;
}

// int main()
// {

//     pid_t id = fork();
//     if(id == 0)
//     {
//         // child
//         printf("pid: %d, exec command begin\n", getpid());
//         sleep(3);
//         // 程序替换
//         //execl("/usr/bin/ls", "ls", "-a", "-l", NULL);
//         // execlp("ls", "ls", "-a", "-l", NULL);
//         // char *const argv[] = {
//         //    "ls",
//         //    "-a",
//         //    "-l",
//         //    NULL
//         // };
//         // execvp("ls", argv);
//         //execvp("argv[0]", argv);
//         execl("./test", "test", NULL);
//         printf("pid: %d, exec command begin\n", getpid());
//     }
//     // parent
//     pid_t rid = waitpid(id, NULL, 0);
//     if(rid == id)
//     {
//         printf("wait success, rid: %d\n", rid);
//     }

//     return 0;
// }
